travelmate: update 2.2.1-2
authorDirk Brenken <[email protected]>
Sun, 19 Oct 2025 18:20:02 +0000 (20:20 +0200)
committerDirk Brenken <[email protected]>
Sun, 19 Oct 2025 18:20:02 +0000 (20:20 +0200)
- fix a logical glitch in opensta-handling
- add a list option  'trm_ssidfilter' to maintain a list of SSID patterns
   for filtering/skipping specific open uplinks, e.g. 'Chromecast*' (fix #26406)

Signed-off-by: Dirk Brenken <[email protected]>
net/travelmate/Makefile
net/travelmate/files/README.md
net/travelmate/files/travelmate.sh

index 536976f52df288711d648866cb2b7408ef03c14e..90958e8da8b691443400f88c212052184e087d40 100644 (file)
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=travelmate
 PKG_VERSION:=2.2.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_LICENSE:=GPL-3.0-or-later
 PKG_MAINTAINER:=Dirk Brenken <[email protected]>
 
index 558e174aca2567c524cc0729cbe8b565dc9cae1f..8c024cc3894c1614da0db392157b5baebeefe410 100644 (file)
@@ -98,6 +98,7 @@ automatically (re)connnects to configured APs/hotspots as they become available.
 | trm_netcheck       | 0, disabled                        | treat missing internet availability as an error                                                       |
 | trm_proactive      | 0, disabled                        | proactively scan and switch to a higher prioritized uplink, despite of an already existing connection |
 | trm_autoadd        | 0, disabled                        | automatically add open uplinks like hotel captive portals to your wireless config                     |
+| trm_ssidfilter     | -, not set                         | list of SSID patterns for filtering/skipping specific open uplinks, e.g. 'Chromecast*'                |
 | trm_randomize      | 0, disabled                        | generate a random unicast MAC address for each uplink connection                                      |
 | trm_triggerdelay   | 2                                  | additional trigger delay in seconds before travelmate processing begins                               |
 | trm_maxretry       | 3                                  | retry limit to connect to an uplink                                                                   |
@@ -117,6 +118,7 @@ automatically (re)connnects to configured APs/hotspots as they become available.
 | trm_stdvpnservice  | -, not set                         | standard vpn service which will be automatically added to new STA profiles                            |
 | trm_stdvpniface    | -, not set                         | standard vpn interface which will be automatically added to new STA profiles                          |
   
+
 * per uplink exist an additional 'uplink' section in the travelmate config, with the following options:  
 
 | Option             | Default                            | Description/Valid Values                                                                              |
index a852f0e220673727373ccd75ca4319483bce90d7..6299cce209c2103e44a183a6111ab477894c5c06 100755 (executable)
@@ -30,6 +30,7 @@ trm_timeout="60"
 trm_radio=""
 trm_scanmode="active"
 trm_connection=""
+trm_ssidfilter=""
 trm_ovpninfolist=""
 trm_vpnifacelist=""
 trm_vpninfolist=""
@@ -73,7 +74,7 @@ f_env() {
                return
        fi
 
-       unset trm_stalist trm_radiolist trm_uplinklist trm_vpnifacelist trm_uplinkcfg trm_activesta trm_opensta
+       unset trm_stalist trm_radiolist trm_uplinklist trm_vpnifacelist trm_uplinkcfg trm_activesta trm_opensta trm_ssidfilter
 
        trm_sysver="$("${trm_ubuscmd}" -S call system board 2>/dev/null | "${trm_jsoncmd}" -ql1 -e '@.model' -e '@.release.target' -e '@.release.distribution' -e '@.release.version' -e '@.release.revision' |
                "${trm_awkcmd}" 'BEGIN{RS="";FS="\n"}{printf "%s, %s, %s %s %s %s",$1,$2,$3,$4,$5,$6}')"
@@ -90,6 +91,8 @@ f_env() {
                                local option="${1}" value="${2//\"/\\\"}"
                                if [ "${option}" = "trm_vpnifacelist" ] && ! printf "%s" "${trm_vpnifacelist}" | "${trm_grepcmd}" -q "${value}"; then
                                        eval "trm_vpnifacelist=\"$(printf "%s" "${trm_vpnifacelist}") ${value}\""
+                               elif [ "${option}" = "trm_ssidfilter" ] && ! printf "%s" "${trm_ssidfilter}" | "${trm_grepcmd}" -q "${value}"; then
+                                       eval "trm_ssidfilter=\"$(printf "%s" "${trm_ssidfilter}") ${value}\""
                                fi
                        }
                elif [ "${name}" = "uplink" ]; then
@@ -188,7 +191,7 @@ f_wifi() {
                sleep "$((trm_maxwait / 6))"
                timeout="$((timeout + (trm_maxwait / 6)))"
        fi
-       f_log "debug" "f_wifi    ::: radio_list: ${trm_radiolist}, radio: ${radio}, timeout: ${timeout}"
+       f_log "debug" "f_wifi    ::: radio_list: ${trm_radiolist}, ssid_filter: ${trm_ssidfilter:-""}, radio: ${radio}, timeout: ${timeout}"
 }
 
 # vpn helper function
@@ -563,8 +566,16 @@ f_subnet() {
 # add open uplinks
 #
 f_addsta() {
-       local wifi_cfg trm_cfg new_uplink="1" offset="1" radio="${1}" essid="${2}"
+       local pattern wifi_cfg trm_cfg new_uplink="1" offset="1" radio="${1}" essid="${2}"
 
+       for pattern in ${trm_ssidfilter}; do
+               case "${essid}" in
+                       ${pattern})
+                               f_log "info" "skipping blacklisted open uplink '${radio}/${essid}'"
+                               return 0
+                               ;;
+               esac
+       done
        if [ "${trm_maxautoadd}" = "0" ] || [ "${trm_opensta:-0}" -lt "${trm_maxautoadd}" ]; then
                config_cb() {
                        local type="${1}" name="${2}"
@@ -979,11 +990,11 @@ f_main() {
                                        if [ -n "${scan_dev}" ]; then
                                                [ "${trm_scanmode}" != "passive" ] && scan_mode=""
                                                scan_list="$(printf "%b" "$("${trm_iwcmd}" "${scan_dev}" scan ${scan_mode} 2>/dev/null |
-                                                       "${trm_awkcmd}" '/^BSS /{if(bssid!=""){if(ssid=="")ssid="unknown";printf "%s %s %s %s %s\n",signal,rsn,wpa,bssid,ssid};bssid=toupper(substr($2,1,17));ssid="";signal="";rsn="+";wpa="+"}
+                                                       "${trm_awkcmd}" '/^BSS /{if(bssid!=""){if(ssid=="")ssid="unknown";printf "%s %s %s %s %s\n",signal,rsn,wpa,bssid,ssid};bssid=toupper(substr($2,1,17));ssid="";signal="";rsn="-";wpa="-"}
                                                        /signal:/{signal=2*($2 + 100)}
                                                        /SSID:/{$1="";sub(/^ /,"",$0);ssid="\""$0"\""}
-                                                       /WPA:/{wpa="-"}
-                                                       /RSN:/{rsn="-"}
+                                                       /WPA:/{wpa="+"}
+                                                       /RSN:/{rsn="+"}
                                                        END{if(bssid!=""){if(ssid=="")ssid="unknown";printf "%s %s %s %s %s\n",signal,rsn,wpa,bssid,ssid}}' | "${trm_sortcmd}" -rn)")"
                                                f_log "debug" "f_main-6  ::: radio: ${radio}, scan_device: ${scan_dev}, scan_mode: ${trm_scanmode:-"active"}, scan_cnt: $(printf "%s" "${scan_list}" | "${trm_grepcmd}" -c "^")"
                                        fi